Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра САПР
Розрахунково-графічна робота
Виконав:
студент групи КН-24
Прийняв:
Мазур В. В.
Львів – 2007
Варіант № 9
Теоретичне завдання №1
Програмні переривання (застосування на прикладах)
Переривання є операцією, яка припиняє виконання програм для спеціальних системних дій. Необхідність переривань обумовлено двома основними причинами: навмисний запит таких дій, як операції введення-виводу на різні пристрої і непередбачені програмні помилки (наприклад, переповнювання при діленні). Система BIOS (Basic Input/Output System) знаходиться в ROM і управляє всіма перериваннями в системі.
У комп'ютерах IBM РС ROM знаходиться за адресою FFFF0H. При включенні комп'ютера процесор встановлює стан скидання, виконує контроль
парності, встановлює в регістрі CS значення FFFFH, а в регістрі IP - нуль. Перша виконувана команда тому знаходиться за адресою FFFF:0 або FFFF0, що є точкою входу в BIOS. BIOS перевіряє різні порти комп'ютера для визначення і ініціалізації підключених пристроїв. Потім BIOS створює на початку пам'яті (за адресою 0) таблицю переривань, яка містить адреси обробників переривань, і виконує дві операції INT 11H (запит списку приєднаного устаткування) і INT 12H (запит розміру фізичної пам'яті).
Наступним кроком BIOS – це визначення чи є на диску або дискеті операційна система DOS. Якщо виявлена системна дискета, то BIOS виконує переривання INT 19H для доступу до першого сектора диска, що містить блок початкового завантаження. Цей блок є програмою, яка зчитує системні файли IBMBIO.COM, IBMDOS.COM і COMMAND.COM з диска в пам'ять. Після цього пам'ять має наступний розподіл:
Таблиця векторів переривань
Дані BIOS
IBMBIO.COM і IBMDOS.COM
Резидентна частина COMMAND.COM
Доступна пам'ять для прикладних програм
Транзитна частина COMMAND.COM
Кінець RAM (ОЗУ)
ROM BASIC
ROM BIOS
Зовнішні пристрої передають сигнал уваги через контакт INTR в процесор. Процесор реагує на цей запит, якщо прапор переривання IF встановлений в 1 (переривання дозволене), і (в більшості випадків) ігнорує запит, якщо прапор IF встановлений в 0 (переривання заборонене).
Операнд в команді переривання, наприклад, INT 12H, містить тип переривання, який ідентифікує запит. Для кожного типу система містить адресу в таблиці векторів переривань, що починається за адресою 0000. Оскільки в таблиці є 256 чотирьохбайтових елементів, то вона займає перші 1024 байти пам'яті від шестизначного 0 до шестизначного 3FF. Кожен елемент таблиці указує на підпрограму обробки вказаного типу переривання і містить адресу кодового сегменту і зсув, які при перериванні встановлюються у регістри CS і IP відповідно.
Переривання заносить в стек вміст регістра прапора, регістра CS і регістра IP. Наприклад, для переривання 12H (яке повертає в регістрі AX розмір пам'яті) адреса елементу таблиці рівна шестизначному 0048 (шестизначне 12 х 4 =
шестизначне 48). Операція виділяє чотирьохбайтовий елемент за адресою шестизначного 0048 і заносить два байти в регістр IP і два байти в регістр SS. Адреса, яка виходить в регістровій парі CS:IP, є адресою початку підпрограми в області BIOS, яка отримує управління. Повернення з цієї підпрограми здійснюється командою IRET (Interrupt Return), яка відновлює прапори і регістри CS і IP із стека і передає управління на команду, наступну за виконаною командою переривання.
Адреса Функція переривань
(шестизначна) (шестизначна.)
0-3 0 Ділення на нуль
4-7 1 Покроковий режим (трасування DEBUG)
8-B 2 Немасковане перериван...